import fs from 'fs';
import bs58 from 'bs58';
// 安装 bs58: npm install bs58, 如果没有安装， 

// 你的 Phantom 私钥字符串（以 Base58 编码）
const phantomPrivateKey = "xxxxxxxx";
                 

try {
  console.log("正在转换私钥...");
  
  // 解码 Base58 私钥
  const decoded = bs58.decode(phantomPrivateKey);
  console.log(`decoded from bs58 => ${decoded}`)
  
  // 转换为数字数组格式
  const keypairArray = Array.from(decoded);
  console.log(`keypairArray  for Array.from  ${keypairArray} `)
  
  // 保存为 Solana CLI 格式
  fs.writeFileSync(
    'test_keypair.json', 
    JSON.stringify(keypairArray)
  );
  
  console.log("✅ 转换成功！");
  console.log("📁 文件保存为: test_keypair.json");
  console.log("🔑 密钥长度:", keypairArray.length, "字节");
  
  // 验证并显示地址
  if (keypairArray.length === 64) {
    const publicKeyBytes = keypairArray.slice(32, 64);
    const publicKey = bs58.encode(publicKeyBytes);
    console.log("📍 公钥地址:", publicKey);
  }
  
} catch (error) {
  console.error("❌ 转换失败:", error.message);
  console.log("请检查私钥格式是否正确");
}